layui.define(['jquery'], function (exports) {
    var JQuery = layui.jquery;
    /*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */
    (function (f) {
        function A(a, b, d) {
            var c = a[0], g = /er/.test(d) ? _indeterminate : /bl/.test(d) ? n : k, e = d == _update ? {
                checked: c[k],
                disabled: c[n],
                indeterminate: "true" == a.attr(_indeterminate) || "false" == a.attr(_determinate)
            } : c[g];
            if (/^(ch|di|in)/.test(d) && !e) x(a, g); else if (/^(un|en|de)/.test(d) && e) q(a, g); else if (d == _update) for (var f in e) e[f] ? x(a, f, !0) : q(a, f, !0); else if (!b || "toggle" == d) {
                if (!b) a[_callback]("ifClicked");
                e ? c[_type] !== r && q(a, g) : x(a, g)
            }
        }

        function x(a, b, d) {
            var c = a[0], g = a.parent(), e = b == k, u = b == _indeterminate,
                v = b == n, s = u ? _determinate : e ? y : "enabled", F = l(a, s + t(c[_type])),
                B = l(a, b + t(c[_type]));
            if (!0 !== c[b]) {
                if (!d && b == k && c[_type] == r && c.name) {
                    var w = a.closest("form"), p = 'input[name="' + c.name + '"]', p = w.length ? w.find(p) : f(p);
                    p.each(function () {
                        this !== c && f(this).data(m) && q(f(this), b)
                    })
                }
                u ? (c[b] = !0, c[k] && q(a, k, "force")) : (d || (c[b] = !0), e && c[_indeterminate] && q(a, _indeterminate, !1));
                D(a, e, b, d)
            }
            c[n] && l(a, _cursor, !0) && g.find("." + C).css(_cursor, "default");
            g[_add](B || l(a, b) || "");
            g.attr("role") && !u && g.attr("aria-" + (v ? n : k), "true");
            g[_remove](F || l(a, s) || "")
        }

        function q(a, b, d) {
            var c = a[0], g = a.parent(), e = b == k, f = b == _indeterminate, m = b == n,
                s = f ? _determinate : e ? y : "enabled", q = l(a, s + t(c[_type])), r = l(a, b + t(c[_type]));
            if (!1 !== c[b]) {
                if (f || !d || "force" == d) c[b] = !1;
                D(a, e, s, d)
            }
            !c[n] && l(a, _cursor, !0) && g.find("." + C).css(_cursor, "pointer");
            g[_remove](r || l(a, b) || "");
            g.attr("role") && !f && g.attr("aria-" + (m ? n : k), "false");
            g[_add](q || l(a, s) || "")
        }

        function E(a, b) {
            if (a.data(m)) {
                a.parent().html(a.attr("style", a.data(m).s || ""));
                if (b) a[_callback](b);
                a.off(".i").unwrap();
                f(_label + '[for="' + a[0].id + '"]').add(a.closest(_label)).off(".i")
            }
        }

        function l(a, b, f) {
            if (a.data(m)) return a.data(m).o[b + (f ? "" : "Class")]
        }

        function t(a) {
            return a.charAt(0).toUpperCase() + a.slice(1)
        }

        function D(a, b, f, c) {
            if (!c) {
                if (b) a[_callback]("ifToggled");
                a[_callback]("ifChanged")[_callback]("if" + t(f))
            }
        }

        var m = "iCheck", C = m + "-helper", r = "radio", k = "checked", y = "un" + k, n = "disabled";
        _determinate = "determinate";
        _indeterminate = "in" + _determinate;
        _update = "update";
        _type = "type";
        _click = "click";
        _touch = "touchbegin.i touchend.i";
        _add = "addClass";
        _remove = "removeClass";
        _callback = "trigger";
        _label = "label";
        _cursor = "cursor";
        _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);
        f.fn[m] = function (a, b) {
            var d = 'input[type="checkbox"], input[type="' + r + '"]', c = f(), g = function (a) {
                a.each(function () {
                    var a = f(this);
                    c = a.is(d) ? c.add(a) : c.add(a.find(d))
                })
            };
            if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a)) return a = a.toLowerCase(), g(this), c.each(function () {
                var c =
                    f(this);
                "destroy" == a ? E(c, "ifDestroyed") : A(c, !0, a);
                f.isFunction(b) && b()
            });
            if ("object" != typeof a && a) return this;
            var e = f.extend({
                    checkedClass: k,
                    disabledClass: n,
                    indeterminateClass: _indeterminate,
                    labelHover: !0
                }, a), l = e.handle, v = e.hoverClass || "hover", s = e.focusClass || "focus",
                t = e.activeClass || "active", B = !!e.labelHover, w = e.labelHoverClass || "hover",
                p = ("" + e.increaseArea).replace("%", "") | 0;
            if ("checkbox" == l || l == r) d = 'input[type="' + l + '"]';
            -50 > p && (p = -50);
            g(this);
            return c.each(function () {
                var a = f(this);
                E(a);
                var c = this,
                    b = c.id, g = -p + "%", d = 100 + 2 * p + "%", d = {
                        position: "absolute",
                        top: g,
                        left: g,
                        display: "block",
                        width: d,
                        height: d,
                        margin: 0,
                        padding: 0,
                        background: "#fff",
                        border: 0,
                        opacity: 0
                    }, g = _mobile ? {position: "absolute", visibility: "hidden"} : p ? d : {
                        position: "absolute",
                        opacity: 0
                    }, l = "checkbox" == c[_type] ? e.checkboxClass || "icheckbox" : e.radioClass || "i" + r,
                    z = f(_label + '[for="' + b + '"]').add(a.closest(_label)), u = !!e.aria,
                    y = m + "-" + Math.random().toString(36).substr(2, 6),
                    h = '<div class="' + l + '" ' + (u ? 'role="' + c[_type] + '" ' : "");
                u && z.each(function () {
                    h +=
                        'aria-labelledby="';
                    this.id ? h += this.id : (this.id = y, h += y);
                    h += '"'
                });
                h = a.wrap(h + "/>")[_callback]("ifCreated").parent().append(e.insert);
                d = f('<ins class="' + C + '"/>').css(d).appendTo(h);
                a.data(m, {o: e, s: a.attr("style")}).css(g);
                e.inheritClass && h[_add](c.className || "");
                e.inheritID && b && h.attr("id", m + "-" + b);
                "static" == h.css("position") && h.css("position", "relative");
                A(a, !0, _update);
                if (z.length) z.on(_click + ".i mouseover.i mouseout.i " + _touch, function (b) {
                    var d = b[_type], e = f(this);
                    if (!c[n]) {
                        if (d == _click) {
                            if (f(b.target).is("a")) return;
                            A(a, !1, !0)
                        } else B && (/ut|nd/.test(d) ? (h[_remove](v), e[_remove](w)) : (h[_add](v), e[_add](w)));
                        if (_mobile) b.stopPropagation(); else return !1
                    }
                });
                a.on(_click + ".i focus.i blur.i keyup.i keydown.i keypress.i", function (b) {
                    var d = b[_type];
                    b = b.keyCode;
                    if (d == _click) return !1;
                    if ("keydown" == d && 32 == b) return c[_type] == r && c[k] || (c[k] ? q(a, k) : x(a, k)), !1;
                    if ("keyup" == d && c[_type] == r) !c[k] && x(a, k); else if (/us|ur/.test(d)) h["blur" == d ? _remove : _add](s)
                });
                d.on(_click + " mousedown mouseup mouseover mouseout " + _touch, function (b) {
                    var d =
                        b[_type], e = /wn|up/.test(d) ? t : v;
                    if (!c[n]) {
                        if (d == _click) A(a, !1, !0); else {
                            if (/wn|er|in/.test(d)) h[_add](e); else h[_remove](e + " " + t);
                            if (z.length && B && e == v) z[/ut|nd/.test(d) ? _remove : _add](w)
                        }
                        if (_mobile) b.stopPropagation(); else return !1
                    }
                })
            })
        }
    })(JQuery);
    //输出接口
    exports('icheck', null);
}).addcss('modules/icheck/icheck.css', 'skinicheckcss');